package com.ika.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.envers.Audited;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;


/**
 * Pengguna generated by iRays
 */

@SuppressWarnings("serial")
@Entity
@Table(name="pengguna")
@Audited
public class Pengguna extends BaseEntity implements java.io.Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_PENGGUNA")
	@SequenceGenerator(name="SEQ_PENGGUNA", sequenceName="SEQ_PENGGUNA", allocationSize=1)
	@Column(name="ID", unique=true, nullable=false)
	private Long id;
	
	@NotNull
	@Length(max=30, message="{validator.long}")
	@Column(name="ID_PENGGUNA", length=30)
	private String idPengguna;
	
	@Length(max=200, message="{validator.long}")
	@Column(name="KATALALUAN", length=200)
	private String katalaluan;
	
	@NotNull
	@Length(max=80, message="{validator.long}")
	@Column(name="NAMA", length=80)
	private String nama;
	
	@NotNull
	@Length(max=12, message="{validator.long}")
	@Column(name="NO_PENGENALAN", length=12)
	private String noPengenalan;
	
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="TARIKH_DAFTAR", length=7)
	private Date tarikhDaftar;
	
	@NotNull
	@Length(max=30, message="{validator.long}")
	@Column(name="EMEL", length=30)
	private String emel;
	
	@Length(max=14, message="{validator.long}")
	@Column(name="TELEFON_BIMBIT", length=14)
	private String telefonBimbit;
	
	@Length(max=100, message="{validator.long}")
	@Column(name="ALAMAT", length=100)
	private String alamat;
	
	@Length(max=10, message="{validator.long}")
	@Column(name="POSKOD", length=10)
	private String poskod;
	
	@Length(max=14, message="{validator.long}")
	@Column(name="TELEFON", length=14)
	private String telefon;
	
	@NotNull
	@Column(name="ID_KOD_KATEGORI_PENGGUNA")
	private Long idKodKategoriPengguna;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_KOD_KATEGORI_PENGGUNA", insertable=false, updatable=false)
	private KodKategoriPengguna idKodKategoriPengguna0;
	
	@Column(name="ID_GAMBAR")
	private Long idGambar;

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_GAMBAR", insertable=false, updatable=false)
	private Dokumen idGambar0;
	
	@Column(name="ID_KOD_NEGERI")
	private Long idKodNegeri;

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_KOD_NEGERI", insertable=false, updatable=false)
	private KodNegeri idKodNegeri0;
	
	@Column(name="ID_KOD_BANDAR")
	private Long idKodBandar;

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_KOD_BANDAR", insertable=false, updatable=false)
	private KodBandar idKodBandar0;

	public Pengguna() {
	}

	public Pengguna(Long id, KodKategoriPengguna idKodKategoriPengguna0,
			Dokumen idDokumen0, KodNegeri idKodNegeri0, KodBandar idKodBandar0,
			String idPengguna, String katalaluan, Date tarikhDaftar,
			String nama, String noPengenalan, String emel,
			String telefonBimbit, String alamat, String poskod, String telefon,
			Long idKodKategoriPengguna, Long idKodNegeri, Long idKodBandar, Dokumen idGambar0) {
		this.id = id;
		this.setIdKodKategoriPengguna0(idKodKategoriPengguna0);
		this.setIdKodNegeri0(idKodNegeri0);
		this.setIdKodBandar0(idKodBandar0);
		this.idPengguna = idPengguna;
		this.katalaluan = katalaluan;
		this.tarikhDaftar = tarikhDaftar;
		this.nama = nama;
		this.noPengenalan = noPengenalan;
		this.emel = emel;
		this.telefonBimbit = telefonBimbit;
		this.alamat = alamat;
		this.poskod = poskod;
		this.telefon = telefon;
		this.setIdKodKategoriPengguna(idKodKategoriPengguna);
		this.setIdGambar(idGambar);
		this.setIdKodNegeri(idKodNegeri);
		this.setIdKodBandar(idKodBandar);
		this.setIdGambar0(idGambar0);
		
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getIdPengguna() {
		return this.idPengguna;
	}

	public void setIdPengguna(String idPengguna) {
		this.idPengguna = idPengguna;
	}

	public String getKatalaluan() {
		return this.katalaluan;
	}

	public void setKatalaluan(String katalaluan) {
		this.katalaluan = katalaluan;
	}

	public Date getTarikhDaftar() {
		return this.tarikhDaftar;
	}

	public void setTarikhDaftar(Date tarikhDaftar) {
		this.tarikhDaftar = tarikhDaftar;
	}

	public String getNama() {
		return this.nama;
	}

	public void setNama(String nama) {
		this.nama = nama;
	}

	public String getNoPengenalan() {
		return this.noPengenalan;
	}

	public void setNoPengenalan(String noPengenalan) {
		this.noPengenalan = noPengenalan;
	}

	public String getEmel() {
		return this.emel;
	}

	public void setEmel(String emel) {
		this.emel = emel;
	}

	public String getTelefonBimbit() {
		return this.telefonBimbit;
	}

	public void setTelefonBimbit(String telefonBimbit) {
		this.telefonBimbit = telefonBimbit;
	}

	public String getAlamat() {
		return this.alamat;
	}

	public void setAlamat(String alamat) {
		this.alamat = alamat;
	}

	public String getPoskod() {
		return this.poskod;
	}

	public void setPoskod(String poskod) {
		this.poskod = poskod;
	}

	public String getTelefon() {
		return this.telefon;
	}

	public void setTelefon(String telefon) {
		this.telefon = telefon;
	}

	public Long getIdKodKategoriPengguna() {
		return idKodKategoriPengguna;
	}

	public void setIdKodKategoriPengguna(Long idKodKategoriPengguna) {
		this.idKodKategoriPengguna = idKodKategoriPengguna;
	}

	public Long getIdGambar() {
		return idGambar;
	}

	public void setIdGambar(Long idGambar) {
		this.idGambar = idGambar;
	}

	public Long getIdKodNegeri() {
		return idKodNegeri;
	}

	public void setIdKodNegeri(Long idKodNegeri) {
		this.idKodNegeri = idKodNegeri;
	}

	public Long getIdKodBandar() {
		return idKodBandar;
	}

	public void setIdKodBandar(Long idKodBandar) {
		this.idKodBandar = idKodBandar;
	}

	public KodKategoriPengguna getIdKodKategoriPengguna0() {
		return idKodKategoriPengguna0;
	}

	public void setIdKodKategoriPengguna0(KodKategoriPengguna idKodKategoriPengguna0) {
		this.idKodKategoriPengguna0 = idKodKategoriPengguna0;
		if (idKodKategoriPengguna0 != null) setIdKodKategoriPengguna(idKodKategoriPengguna0.getId());
	}

	public KodNegeri getIdKodNegeri0() {
		return idKodNegeri0;
	}

	public void setIdKodNegeri0(KodNegeri idKodNegeri0) {
		this.idKodNegeri0 = idKodNegeri0;
		if (idKodNegeri0 != null) setIdKodNegeri(idKodNegeri0.getId());
	}

	public KodBandar getIdKodBandar0() {
		return idKodBandar0;
	}

	public void setIdKodBandar0(KodBandar idKodBandar0) {
		this.idKodBandar0 = idKodBandar0;
		if (idKodBandar0 != null) setIdKodBandar(idKodBandar0.getId());
	}

	public Dokumen getIdGambar0() {
		return idGambar0;
	}

	public void setIdGambar0(Dokumen idGambar0) {
		this.idGambar0 = idGambar0;
		if (idGambar0 != null) setIdGambar(idGambar0.getId());
	}

}